#ifndef GAMESTATE_H_INCLUDED
#define GAMESTATE_H_INCLUDED

#include "GameEngine.h"

class GameState
{
public:
	virtual void Init(sf::RenderWindow& window) = 0;
	virtual void Cleanup() = 0;

	virtual void Pause() = 0;
	virtual void Resume() = 0;

	virtual void Events(GameEngine* game, sf::RenderWindow& window) = 0;
	virtual void Update(GameEngine* game, sf::RenderWindow& window) = 0;
	virtual void Render(GameEngine* game, sf::RenderWindow& window) = 0;

	void ChangeState(GameEngine* game, GameState* state) {
		game->ChangeState(state);
	}

protected:
	GameState() { }
};

#endif // GAMESTATE_H_INCLUDED
